package com.example.demo.thread.ch5.case04;

/**
 * 服务器启动代码
 * <p>
 * 某定制web服务器在其启动时需要启动若干启动过程比较耗时的服务。
 * 为了尽可能地减少服务器启动过程的总耗时，该服务器会使用专门的工作者线程以并发的方式去启动这些服务。
 * 但是服务器在所有启动操作结束后，需要判断这些服务的状态以检查服务器的启动是否成功的。
 * 只有在这些服务全部启动成功的情况下该服务器才被认为是启动成功的，
 * 否则服务器的启动算失败，此时服务器会自动终止，退出java虚拟机
 *
 * @author: htc
 * @date: Created in 11:38 2019/1/14.
 */
public class ServerStarter {
    public static void main(String[] args) {
        //省略其他代码

        //启动所有服务
        ServiceManager.startServices();

        //执行其他操作

        //在所有其他操作执行结束后，监测服务启动状态
        boolean allIsOk;

        //检测全部服务的启动状态
        allIsOk = ServiceManager.checkServiceStatus();

        if (allIsOk) {
            System.out.println("All service were successfully started!");
            //省略其他代码
        } else {
            //个别服务启动失败，退出jvm
            System.out.println("some service failed to start, exiting JVM...");
            System.exit(1);
        }
    }
}
